//节点默认参数
var node = {
    nodeId: null,//节点id
    nodeType: null,//节点类型
    x: null,//位置x
    y: null,//位置y
    title: null,//节点标题
    nodeData: null//节点数据
};
//连接线默认参数
var line = {
    lineId: null,//连接线id
    lineType: null,//连接线类型
    sourcePointId: null,//线的起点id
    targetPointId: null,//线的终点id
    title: null,//线的标题文本
    lineData: null //线的数据
};
//开始节点类型
var beiginNodeType = {
    type: 'Begin',//节点类型名称,
    name: '开始',//开始节点标题
    maxCount: 1,
    toolbarTemplate: '<div style="width:90px;height:36px;border:1px solid red;">开始</div>',
    template: '<div style="width:120px;height:50px;border:1px solid red;">{title}</div>',//样式模板
    onConfig: function (nodeData, refreshCallback) {
        if (refreshCallback)
            refreshCallback(nodeData.title, nodeData);
    }//双击节点开始配置节点属性时:function(nodeData,refreshCallback),refreshCallback:function(title,nodeData)//刷新节点数据,传入title,节点数据
};
//结束节点类型
var endNodeType = {
    type: 'End',//节点类型名称,
    name: '结束',//开始节点标题
    maxCount: 1,
    toolbarTemplate: '<div style="width:90px;height:36px;border:1px solid red;">结束</div>',
    template: '<div style="width:120px;height:50px;border:1px solid red;">{title}</div>',//样式模板
    onConfig: function (nodeData, refreshCallback) {
        if (refreshCallback)
            refreshCallback(nodeData.title, nodeData);
    }//双击节点开始配置节点属性时:function(nodeData,refreshCallback),refreshCallback:function(title,nodeData)//刷新节点数据,传入title,节点数据
};
//审批节点类型
var approveNodeType = {
    type: 'Approve',//节点类型名称,
    name: '审批步骤',//开始节点标题
    toolbarTemplate: '<div style="width:90px;height:36px;border:1px solid red;">审批步骤</div>',
    template: '<div style="width:120px;height:50px;border:1px solid red;">{title}</div>',//样式模板
    onConfig: function (nodeData, refreshCallback) {
        if (refreshCallback)
            refreshCallback(nodeData.title, nodeData);
    }//双击节点开始配置节点属性时:function(nodeData,refreshCallback),refreshCallback:function(title,nodeData)//刷新节点数据,传入title,节点数据
};
//任务节点类型
var taskNodeType = {
    type: 'TaskProcess',//节点类型名称,
    name: '任务处理步骤',//开始节点标题
    toolbarTemplate: '<div style="width:90px;height:36px;border:1px solid red;">任务处理步骤</div>',
    template: '<div style="width:120px;height:50px;border:1px solid red;">{title}</div>',//样式模板
    onConfig: function (nodeData, refreshCallback) {
        if (refreshCallback)
            refreshCallback(nodeData.title, nodeData);
    }//双击节点开始配置节点属性时:function(nodeData,refreshCallback),refreshCallback:function(title,nodeData)//刷新节点数据,传入title,节点数据数据
};
//子流程节点类型
var subFlowNodeType = {
    type: 'SubFlow',//节点类型名称,
    name: '子流程',//开始节点标题
    toolbarTemplate: '<div style="width:90px;height:36px;border:1px solid red;">子流程</div>',
    template: '<div style="width:120px;height:50px;border:1px solid red;">{title}</div>',//样式模板
    onConfig: function (nodeData, refreshCallback) {
        if (refreshCallback)
            refreshCallback(nodeData.title, nodeData);
    }//双击节点开始配置节点属性时:function(nodeData,refreshCallback),refreshCallback:function(title,nodeData)//刷新节点数据,传入title,节点数据
};
//并行分支开始节点类型
var parallelBeiginNodeType = {
    type: 'ParallelBegin',//节点类型名称,
    name: '并行开始',//开始节点标题
    toolbarTemplate: '<div style="width:90px;height:36px;border:1px solid red;">并行开始</div>',
    template: '<div style="width:120px;height:50px;border:1px solid red;">{title}</div>',//样式模板
    onConfig: function (nodeData, refreshCallback) {
        if (refreshCallback)
            refreshCallback(nodeData.title, nodeData);
    }//双击节点开始配置节点属性时:function(nodeData,refreshCallback),refreshCallback:function(title,nodeData)//刷新节点数据,传入title,节点数据
};
//并行分支结束节点类型
var parallelEndNodeType = {
    type: 'ParallelEnd',//节点类型名称,
    name: '并行结束',//开始节点标题
    toolbarTemplate: '<div style="width:90px;height:36px;border:1px solid red;">并行结束</div>',
    template: '<div style="width:120px;height:50px;border:1px solid red;">{title}</div>',//样式模板
    onConfig: function (nodeData, refreshCallback) {
        if (refreshCallback)
            refreshCallback(nodeData.title, nodeData);
    }//双击节点开始配置节点属性时:function(nodeData,refreshCallback),refreshCallback:function(title,nodeData)//刷新节点数据,传入title,节点数据
};

//默认连接线类型
var flowChartLineType = {
    type: 'FlowChart',
    lineType: 'FlowChart',
    lineOptions: {
        stub: [30, 60],
        gap: 10,
        cornerRadius: 5,
        alwaysRespectStubs: true,
        midpoint: 0.9
    },
    style: {
        strokeWidth: 2,
        stroke: "#61B7CF",
        joinstyle: "round",
        outlineStroke: "white",
        outlineWidth: 2
    },
    hoverStyle: {
        strokeWidth: 3,
        stroke: "#216477",
        outlineWidth: 5,
        outlineStroke: "white"
    },
    onConfig: null
};

//默认设置
var defaultSetting = {
    nodes: [beiginNodeType, endNodeType, approveNodeType, taskNodeType, subFlowNodeType, parallelBeiginNodeType, parallelEndNodeType],
    line: flowChartLineType
};